The present invention relates to the use of computers on a network, such as the Internet, and to the process of interacting therewith, such as browsing web sites and downloading data therefrom, and, more particularly, to systems and methods for accelerating the acquisition and display of network data.
It is common today for computers, such as general purpose personal computers found in the home or office, to be used to access information available from a network. For example, it is common for an operator of a personal computer to browse web sites on the Internet. Such computers typically employ a modem (modulator-demodulator), or other low speed (as compared to the internal processing speed of the computer) communication interfaces, for the purpose of interfacing the computer to a network, such as the Internet, through, for example, a PSTN (Public Switched Telephone Network) or other communication gateway.
Additionally, a standard network user interface is often utilized in order to both provide predictable and user friendly interaction with a user and to provide compatibility with a plurality of network devices operable on the network. Examples of such standardized network user interfaces are NETSCAPE NAVIGATOR by Netscape Communications Corporation and INTERNET EXPLORER by Microsoft which are often referred to as xe2x80x9cInternet browsers.xe2x80x9d These network user interfaces provide a standardized platform through which network devices may provide robust interaction with a variety of different user computer hardware and software. For example, rich graphic images may be provided by a network device for display upon a variety of different computer systems by providing data, such as in the form of a joint photographic experts group (JPEG) data file, operable with a standard network user interface to generate the image on the user""s computer. Accordingly, the computer hardware becomes nearly transparent to the user and the network device as the user interface arbitrates the interaction in a similar manner regardless of the particular computer platform upon which it operates. Of course, the use of such a network user interface may include the use of a plurality of program modules and data files, such as application programming interface (API) modules and data libraries.
The performance of computers interacting with networks, such as during browsing of the Internet, is often disagreeably slow. There are at least two major factors that affect performance of a computer interacting with networks such as the Internet. These two factors are the speed of the communication interface, i.e., the baud rate of the modem used with the computer, and network latency.
The communication interface speed is a limit on the speed at which data from a host server on the network, such as an Internet web site, is downloaded to the user""s computer. For example, where the computer is coupled to the network via a 28.8 KiloBaud modem, an image that is 30,000 characters in length will take approximately ten seconds to download to the user""s computer. However, if the modem is a 14.4 KiloBaud modem, the same image will take approximately twenty seconds to download. Of course, if an even slower modem is used, downloading that same image will take a proportionally longer length of time.
Even where a network interface significantly faster than the speeds described above, the transfer of information between the network and the user""s computer can require an appreciable time. Often a user""s computer is a part of a local area network (LAN), used for example as an enterprise wide intranet or for providing a gateway to another network such as the Internet, where the network interface is rated at a speed substantially higher than those of the modems described above. However, these LANs typically provide data throughput significantly slower than the internal processing speed of the computer and often provide actual data throughput slower than the communication rate of the network interface card (NIC). For example, Ethernet systems rated at 10 Mbps often deliver actual throughput of approximately 1 Mbps due to heavy network usage causing multiple data packet collisions and/or routers, bridges and concentrators causing data bottlenecks. Accordingly, downloading an image as described above can take a substantial amount of time to download to the user""s computer.
Network latency is the time it takes for the network devices, such as an Internet web site and the devices coupling the web site to the user""s computer, to provide a response to the user""s computer when it makes a request. For example, it may take a second or longer for a server hosting an Internet site to respond to a request for a single image. If the data requested by the user""s computer contains multiple such images, for example a web page having 20 to 30 images, the total latency introduced by the server providing these images is potentially 20 to 30 seconds.
Moreover, the server is typically not the only network device affecting the network latency as perceived by the user. Generally, other network devices are utilized in providing data communication between the user""s computer requesting data and the server providing the data. Such other devices may include communication servers, routers, bridges, and gateways. Each of the devices operable in the link between the user""s computer and the server being accessed may potentially introduce additional latency time as experienced by the user.
Although not a network latency problem, there is generally latency associated with the user of the computer system, such as in reviewing data presented and selecting an appropriate next interaction. During this user latency period the capacity of the network interface is not used, or at least not used to the full extent. For example, a user browsing the Internet may be presented with a web page giving the user particular information in the form of text, graphic images, and the like. Associated with particular information of the web page may be links, commonly referred to as hyperlinks or xe2x80x9cbuttons,xe2x80x9d to other web pages or other resources having related or additional information. There may be significant periods of time where the network interface remains idle, or nearly so, after transmission of the data of a displayed page, while the user assimilates the displayed data and decides how to interact next. Often the next interaction is in the form of selection of one of the links presented which results in the retrieval, as affected by the above-described network latencies, over the network of the associated information.
A further problem exists in the prior art in that desired information is often associated with undesired or unnecessary information. For example, in the above-mentioned web pages, there are typically information resources such as text and graphic images associated with sponsors of the web page. Likewise, there are often information packets associated with the particular user and his/her interaction with the network device, often called xe2x80x9ccookiesxe2x80x9d in Internet parlance, which are transferred to and/or from the user computer. The above resources, although often not desired by the user and often quite large in data content, require communication bandwidth to be transferred to or from the user""s computer, although the user would probably prefer to forgo their transmission in favor of transmission of the desired information. Accordingly, the transmission of this unnecessary information through the network, including the aforementioned latency problems, and the network interface, having the aforementioned speed limitations, during network interaction only exasperates the already disagreeable performance of the network.
Accordingly, there is a need in the art for a system and method of accelerating interaction over a network. Specifically, there is a need in the art for a system and method for accelerating the operation of a web browser in downloading and presenting data from a network server hosting a web site.
There is a further need for more nearly fully utilizing the communication capacity of the network. In particular there is a need for utilizing network interface idle time in order to compensate for latencies caused by network communications.
There is yet a further need in the art for a system and method for filtering out the transmission of unwanted or unnecessary information between the network and the user""s computer.
There is a still further need in the art for the above systems and methods to be utilized by standardized user interfaces such as those already in existence and generally deployed.
These and other objects, features and technical advantages are achieved by a system and method which provides an intelligent cache of data provided over a network in order to more speedily present data to a user. Additionally, an intelligent retrieval system and method are provided to utilize idle network interface bandwidth in order to pre-fetch information which the user is likely to require in a subsequent interaction. Furthermore, filters are provided to avoid or eliminate the transmission of unnecessary or undesired information such as advertisements or cookies.
Preferably, the above-described systems and methods are embodied in a software product operable on general purpose processor-based systems, such as personal computers based on the Intel 80X86 or Motorola 680X0 platforms. A further preferred embodiment is capable of transparent use with existing network user interfaces, such as NETSCAPE NAVIGATOR and/or INTERNET EXPLORER. Accordingly, this preferred embodiment is in the form of a software module, or plug-in, specifically adapted to interface with selected network user interfaces in order to provide ones of the above-described functions.
In understanding the operation of the present invention it is helpful to review information with respect to operation of prior art networks and network user interfaces. To aid in understanding the present invention, the specific example of an Internet browser interacting with the Internet, such as through a web site, will be discussed. However, it shall be understood that the present invention is not limited to use with network user interfaces in the form of Internet browsers and the Internet. The present invention is useful in any number of network situations, such as local area networks (LANs), wide area networks (WANs), intranets, interactive cable systems, and the like, where acceleration may be had through intelligent caching of network data, more efficient use of throughput bandwidth, and/or filtering of unwanted or unnecessary data. Moreover, use of the present invention is not limited to networks, but may in fact be used to accelerate data communication between many devices having the aforementioned latency and/or throughput limitations.
When using a typical prior art web browser, the first time a user accesses a particular web site or web page, data representing the hypertext markup language (HTML) and graphic images (web resources) are downloaded from the site in a conventional manner and that data, in addition to presenting the data for the user in the browser""s window, is stored in a local cache. The local cache is typically associated with the web browser and generally consists of a file, or files, created on a local hard disk. Each resource is downloaded one at a time as a result of a GET  less than resource greater than  request. If there are 30 resources on a web page, there are 30 GET  less than resource greater than  requests issued to the web site. The response to each request contains data representing the resource and the date/time-stamp of when the resource was modified on the server. This stamp is also stored in the local cache.
In the prior art systems, the second or subsequent time a user accesses the same web page, the browser looks at the resource in its cache, but before displaying the resource to the user, the browser issues a GET  less than resource greater than  request to the server with an If-Modified-Since:  less than date/time of modification greater than  tag. The If-Modified-Since tag contains the date/time-stamp of the resource in the browser""s cache. The server downloads the resource to the browser only if the resource has been modified since the stamp indicated in the If-Modified-Since tag. If the resource has not been modified, the server responds with a Not Modified code indicating to the browser that the copy of the resource in the cache should be presented for the user. However, regardless of whether the resource is downloaded from the server or is retrieved from the local cache, the resource is displayed to the user only after the server""s response.
It shall be appreciated that the aforementioned software calls, such as GET and If-Modified-Since, are typical of software calls which may be found in a software call library such as those of the Winsock library in common use with web browsers today. However, it should be understood that these particular calls are used herein for illustrative purposes and are not intended to be a limitation of the present invention.
According to the preferred embodiment of the present invention, the intelligent cache operates much like the prior art system the first time a user accesses a particular web site or page. Accordingly, data representing the HTML and graphic image web resources are downloaded from the site and stored in the local cache. However, subsequent accesses to the page by the user results in all resources being immediately drawn from the local cache for presentation to the user. Additionally, the present invention operates to issue requests to the web site, substantially simultaneously with the immediate presentation of the cached resources to the user, in order to determine if the corresponding resources have been updated since their storage in cache. The user gets the benefit of being able to see the web page immediately while the resources that have changed since they were previously downloaded are updated in the background.
The foregoing is preferably accomplished by incorporating in the user computer a modified instruction set, such as in the form of a second Winsock library interposed between the web browser and the original or first Winsock library, in order to alter the way in which the computer operates with respect to network requests. By interposing the new library between the web browser and the original library, it is possible to simulate the sending of calls over the Internet without actually sending such calls. This accelerates steps involving xe2x80x9cgetxe2x80x9d calls, which are calls that typically go out over the, somewhat slower, Internet to the web sites, by servicing the requests locally within the computer. To the web browser, operation of the present invention is substantially transparent, as it appears that the call is going out over the Internet. However, instead of transmitting the call though the network interface, the user computer first looks in a local storage cache for the needed data and gives it to the web browser if it is available. Because the information is provided locally, through internal bus structures having significantly higher bandwidth than the typical network interface, thus avoiding the network interface bottleneck and latencies associated with the network, the presentation of data to the user is accelerated dramatically.
The present invention, operating in the background of the loading of data from the local storage cache, sends a xe2x80x9cgetxe2x80x9d to the server hosting a web site, and identifies changes since the previous load stored in the cache. Preferably, the user computer notifies the user of changes in the data, as between that presented to the user and that currently available from the server, by issuing an audible sound, such as a beep or tone. The user can then refresh the page, typically by pressing a key, such as function key F5 on the user computer, or by clicking a mouse button. Of course, other methods of notifying the user of changes in the data and/or its presentation may be utilized, such as the automatic refreshing of the display upon the downloading of updated resources, if desired.
According to the present invention, during the second and subsequent accesses to a web page, any resources present in the local cache are displayed to the user immediately. In the background the present invention causes the GET  less than resource greater than  requests to be issued to the server in order to update the cache and/or presentation to the user. However, because the resources are displayed immediately, even though they might be out-of-date, the overall perception of speed is increased. Moreover, because the resources are displayed immediately, prior even to a response to a GET  less than resource greater than  request with an If-Modified-Since:  less than date/time of modification greater than  tag as required by the prior art systems before loading data from cache, speed is actually increased even over the prior art system where the data is stored in cache.
However, because the resources are still requested in the background, the overall time it takes to get the most recent resources remains substantially the same as the prior art when the intelligent cache of the present invention is used alone. The intelligent cache principally speeds up the process of putting a web page on the monitor screen of the user""s computer by eliminating the network latency wait and the network interface speed related wait due to going out over the Internet.
According to a preferred embodiment of the present invention, the intelligent fetch function operates to pre-load hypertext links so that if the user selects a particular link, the corresponding web page is displayed immediately instead of waiting for the download of the entire page at that time. While the user is looking at the current page, the present invention operates in the background to fetch all the links associated with the present page, so that when the user eventually is ready to select one of the links, it is likely that the page is already on the user""s machine in a cache.
Preferably, in accordance with the present invention, the user""s previously used links are remembered, and those links are pre-loaded first. Accordingly, the links most likely to be selected by the user, based on historical information, are pre-loaded before those links never before accessed by the user. As such, where a web page provides a number of links sufficient to require download time in excess of the viewing time of the web page by the user, the present invention operates to increase the likelihood that a link subsequently selected by the user will have already been downloaded.
It shall be appreciated that the intelligent fetch function of the present invention in combination with the aforementioned intelligent cache of the present invention operate to accelerate the interaction of the user computer with the network server. For example, in addition to pre-loading links, the intelligent fetch function may operate with the intelligent cache function in order to pre-fetch only those resources which have been changed from the last time the user accessed the resource. Accordingly, more background download time may be devoted to the acquisition of resources changed since the user""s previous access or which have never been previously accessed by the user. As this pre-fetching is performed in the background, resources requiring updated data from a previous access may be presented to a user instantaneously, including the updated data pre-downloaded in the background, upon selection of an associated link by the user. Moreover, links which have never been accessed by the user may be presented to a user instantaneously, provided sufficient time elapses between the loading of the current web page and the selection of a link by the user.
The ad filter or ad blocking feature of a preferred embodiment of the present invention recognizes Internet advertising patterns and code and permits loading a page rapidly without tying up network resources downloading and displaying the advertising. Instead of the ad, a blank space, or other image or message, is displayed on the user""s computer screen. Of course, the user can view ads, if desired. For example, the user could disable the ad filter during certain sessions, for selected web sites or pages, for ads fitting selected criteria, or the like. Likewise, the user could completely disable the ad filter if it is desired to view all ads.
According to a preferred embodiment of the present invention, the ad filter is implemented by compiling an ad list. When a request is issued, a comparison is made with the ad list to determine if the requested resource is on the ad list. This ad list may be initialized and/or updated periodically by a central source, such as an ad server which maintains a master list. The server may assimilate information from other users or may itself pole the network to determine the existence of ads to add to the list. Alternatively, the ad list may be associated solely with the particular network user interface and, accordingly, include only ads discovered by this network user interface.
Resources may be determined to be ads, either by the network user interface or the aforementioned central source, from information such as universal resource locator (URL) information. For example, if a graphic image is located on a site in a different domain than the web page it may be determined to be an ad. Additionally, or alternatively, if the portion of the URL the left of the domain is specified as xe2x80x9cadxe2x80x9d, xe2x80x9cadsxe2x80x9d, xe2x80x9c/adsxe2x80x9d, xe2x80x9cad/xe2x80x9d, a xe2x80x9csponsorxe2x80x9d, a xe2x80x9cbannerxe2x80x9d, or the like, it may be determined to be an ad. When such a resource is detected, its resource name is preferably added to the ad list and, therefore, not retrieved or displayed by the browser.
The cookie filter feature of a preferred embodiment of the present invention employs some features of the ad filter. The ad filter software operates to identify ad networks. According to the preferred embodiment, if a graphic image is located on a site in a different domain than the page, it is determined to be an ad. Furthermore, as this resource is located in a different domain, it is likely that this domain is an ad network. Typically, when an ad network serves up an ad resource it also attempts to send a cookie, generally using an HTTP xe2x80x9cSET COOKIExe2x80x9d command. However, the cookie filter software of the present invention operates to erase this cookie. The cookie filter feature preferably erases the transmission of a cookie in either direction, from the ad network, and to the ad network and, thus, prevents the ad network from compiling utilization and/or demographic data about the user for subsequent marketing campaigns.
The cookie filter of the present invention may be operated to filter all cookies from being transmitted and/or received. However, often cookies are desired by a user in order to automatically establish user preferences, account numbers, passwords, and the like. Accordingly, the preferred embodiment of the present invention operates an intelligent cookie filter in order to filter only cookies identified as undesirable cookies, such as the aforementioned ad cookies. Of course, the present invention may be utilized to filter other cookies, such as those associated with particular sites, pages, resources, or the like, if desired. The system can be designed to also filter other types of non-worded material and can operate on various parameters, such as length, content, relative placement of material, etc.
The foregoing has outlined rather broadly the features and technical advantages of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter which form the subject of the claims of the invention. It should be appreciated by those skilled in the art that the conception and the specific embodiment disclosed may be readily utilized as a basis for modifying or designing other structures for carrying out the same purposes of the present invention. It should also be realized by those skilled in the art that such equivalent constructions do not depart from the spirit and scope of the invention as set forth in the appended claims.